# -*- coding: utf-8 -*-
"""
Created on Sun Aug 13 21:43:41 2023

@author: skunk69
"""

import json

chinese_name = u'父母教养方式评价量表'
english_name = 'Egna Minnen av Barndoms Uppfostran-own memories of parental rearing practice in childhood'
abbreviation = 'EMBU'
category = u'家庭与人际关系量表'

outline = u"""EMBU(Egma Minnen av Barndoms uppforstran)是1980年由瑞典Umea大学精神医学系C．Perris等人共同编制用以评价父母教养态度和行为的问卷。
50~60年代，在精神医学领域人们意识到家庭环境与子女罹患精神疾病存在一定关系。当时多注意从父母的早逝、离异、分居等角度去考虑这种关系，而很少探讨父母教养行为与子女心理建康的关系。但当时也出现过几种父母教养方式的评价问卷(Schaefer 1959，Slater 1962，Becker 1964)，其中较有影响的是1959年由Schaefer编制的子女对父母行为的评价问卷(Children‘s Report of Parental Behaviour Inventory，CRPBI)。这一量表把父母教养方式分三个维度：接纳(acceptance)一拒绝(rejection)，心理自主(psychological autonomy)一心理受控(psychological control)，严厉(firm control)一放纵(indulgenence)。但是Perris等人认为，上述维度并不能包括父母教养方式的全部内涵，起码是不充分的。而越来越多的人在临床实践中观察到子女健康的人格和良好的社会适应能力与父母教养方式似乎密切相关，但由于缺乏客观、全面的评价工具使这一领域的研究滞留不前。因此，他们认为需要编制一个全面而深入的评价父母教养方式的问卷。开始他们采用半定式会谈方式帮助患者回忆父母的教养行为。然而很快他们就意识到为了保证信息的客观性、真实性以及评价的方便，标准问卷是一种更为恰当的方式。因此，他们决定根据Schaefer提出的父母教养方式维度的概念，编制一套反映父母教养方式全貌的问卷。
几位临床医生根据前人所涉及的父母教养方式的维度，几经切磋，拟定了父母教养方式的十五种行为，每种行为涉及的5个条目，还有11个不属于上述十五种行为的条目。同时，在问卷之后还附加了两个问题。问卷一经发表，立即引起许多临床心理学家的关注，英国、澳大利亚、荷兰、意大利等国先后对它进行修订，并在这些国家进行父母教养方式的跨文化研究。他们以EMBU为测验工具，对神经症患者父母教养方式的特征进行了探讨，并得出较为一致的结论，即神经症患者的父母较正常人的父母对子女缺乏情感温暖，理解、信任和鼓励，但却有过多的拒绝和过度保护。
因此，EMBU从问世开始，就为人们提供了一个探讨父母教养方式与子女心理健康关系的有力而客观的工具。从另一个角度说，为我们探讨心理疾病的病因学提供了一条途经，同时，EMBU也可以用来探讨父母教养方式对人格形成的影响，让更多的人意识到哪些教养方式是不当的，从而改善、调整并最终放弃不当的教养方式，让更多的子女在良好的教养环境中成长并形成健全的人格，从这个角度讲，EMBU应该在全社会向更多育龄父母普及，国家应该建立相关法律适当干预父母教养方式。"""

instruction = u"""在回答问卷之前，请您认真阅读下面的指导语：
父母的教养方式对子女的发展和成长是至关重要的。让您确切回忆小时候父母对您说教的每一细节是很困难的。但我们每个人都对我们成长过程中父母对待我们的方式有深刻印象。回答这一问卷，就是请您努力回想小时候留下的这些印象。
问卷有很多题目组，每个题目答案均有“从不”、“有时”、“经常”和“总是”四个等级。请您分别在最适合您父亲和您母亲的等级上面选择。每题只准选一个答案。您父亲和母亲对您的教养方式可能是相同的，也可能是不同的。请您实事求是地分别回答。
如果您幼小时候父母不全，可以只回答父亲或母亲一栏。如果是独生子女，没有兄弟姐妹，相关的题目可以不答。问卷不记名，请您如实回答。"""

with open('EMBU.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for key,line in enumerate(lines):
    _,value = line.strip().split('）',maxsplit=1)
    items[key+1] = value

reverse_items = [20,50,56]

father_scales = [u'情感温暖、理解（父）',u'惩罚、严厉（父）',u'过分干涉（父）',
                 u'偏爱被试（父）',u'拒绝、否认（父）',u'过度保护（父）']
mother_scales = [u'情感温暖、理解(母)',u'过分干涉、过分保护(母)',u'拒绝、否认(母)',
                 u'惩罚、严厉(母)',u'偏爱被试(母)']
scales = {
    'father_scales':father_scales,
    'mother_scales':mother_scales
    }
father_scales_items = [
    [2,4,6,7,9,15,20,25,29,30,31,32,33,37,42,44,60,61,66],# 情感温暖、理解（父）
    [5,13,17,18,43,49,51,52,53,55,58,62],# 惩罚、严厉（父）
    [1,10,11,14,27,36,48,50,56,57],# 过分干涉（父）
    [3,8,22,64,65],# 偏爱被试（父）
    [21,23,26,28,34,35,45],# 拒绝、否认（父）
    [12,16,39,40,46,59],# 过度保护（父）
    ]
not_in_father = {19,24,38,41,47,54,63}

# check scales_items
print(f'scale length={[len(l) for l in father_scales_items]}')

check = []
for l in father_scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,67)}-not_in_father
print(f'complementary set= {check_set}')

mother_scales_items = [
    [2,4,6,7,9,15,25,29,30,31,32,33,37,42,44,54,60,61,63],# 情感温暖、理解(母)
    [1,11,12,14,16,19,24,27,35,36,41,46,48,50,56,57,59],# 过分干涉、过分保护(母)
    [23,26,28,34,38,39,45,47],# 拒绝、否认(母)
    [13,17,43,49,51,52,53,55,58,62],# 惩罚、严厉(母)
    [3,8,22,64,65],# 偏爱被试(母)
    ]
not_in_mother = {5,10,18,20,21,40,66}

scales_items = {
    'father_scales_items':father_scales_items,
    'mother_scales_items':mother_scales_items
    }

# check scales_items
print(f'scale length={[len(l) for l in mother_scales_items]}')

check = []
for l in mother_scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,67)}-not_in_mother
print(f'complementary set= {check_set}')

print(not_in_father & not_in_mother)

factors = [u'父亲教养方式',u'母亲教养方式']
factors_scales = [father_scales,mother_scales]
rating = [u'从不',u'有时',u'经常',u'总是']
score_rules = list(range(1,5))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《父母教养方式评价量表》属于一个自评量表。"""

reliability = u"""国内研究样本为高中生和大学生。对主因素分析方法所抽取的主因素的同质性信度、分半信度和间隔三个月重测信度进行测定，结果都比较理想。"""
validity = u"""结构效度方面，考虑到东西方文化差异，根据施测结果，对原量表进行主因素分析，然后通过因素旋转确定了因素数目和条目归属与取舍。最终确定父亲教养方式由6个主因素组成，母亲教养方式由5个主因素组成。修订后的EMBU是多维的，每一个主因素代表一个分量表。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向题目反向计分，然后将各维度题目相加得到各维度分"""

applications = u"""随着父母教养方式评价量表的修订及试用，涌现出了大量的有关父母教养方式的研究。有父母教养方式对子女的心理健康、焦虑、抑郁、自尊、社会化、人格发展、问题行为的产生以及道德行为等方面影响的研究，也有对影响父母教养方式因素的研究，以及对不同人群父母教养方式的差异比较研究。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)